묻고 답해요
129만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
셀레늄 실습중 문의
수업을 듣고 다른 사이트로 실습을 해보려고 하는데,jsp로 만들어진 공공기관 사이트는 뭔가 잘 안먹히는 모습니다.아래 사이트의 테이블 정보를 가져오고 싶은데, 얘네들은 클릭해도 주소가 변경되는것도 없고 아래와 같이 table이 들어있는 상위 class 태그를 찾아서 정의하고, 거기에서 table의 class명을 넣고 tbody, tr까지 찾아들어가도록 코딩을 했는데 table의 class명이 없다고 에러가 뜹니다.이런 사이트의 table내 정보는 어떻게 가져올 수 있고,테이블에 있는 원자재를 클릭해서 넘어가는 페이지는 어떻게 찾아갈 수 있나요?(XPATH, LINK_TEXT해도 먹히지 않아요..)https://www.motie.go.kr/motie/py/sa/todayeconomyindexprice/todayEconomyIndexPri.jsp url = "http://www.motie.go.kr/motie/py/sa/todayeconomyindexprice/todayEconomyIndexPri.jsp" driver.get(url) time.sleep(2) # driver.find_element(By.LINK_TEXT,"통계정보").click() # time.sleep(2) # driver.find_element(By.LINK_TEXT,"원자재가격정보") # time.sleep(2) class1 = driver.find_element(By.CLASS_NAME,"iframeLayout01") #테이블은 위와 같이 <table>안에 <tbody>, <tbdoy>안에 <tr>, <tr>안에 <td> 순으로 포함되어 있다. table_content = class1.find_element(By.CLASS_NAME,"data_print") tbody = table_content.find_element(By.TAG_NAME,"tbody") rows = tbody.find_elements(By.TAG_NAME,"tr") for index, value in enumerate(rows): body=value.find_elements(By.TAG_NAME,"td")[0] print(body.text)
-
미해결실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
멜론편 진행하고 있는데 배너 닫는 버튼이 안보이네요.
멜론편 진행하고 있는데 저는 상단에 배너가 떠서 강의 중 알려주신 대로 배너 닫는 버튼 클릭 추가하려고 하는데, 배너 닫는 버튼이 안보이네요.이런 경우는 어떻게 해야될까요?
-
미해결이것이 진짜 크롤링이다 - 기본편
옵션 선택에 따른 크롤링
안녕하세요. 이것이 진짜 크롤링이다 기본편을 막 완강했고, 실전편을 수강하기에 앞서 질문이 있어 글을 남깁니다. 네이버 쇼핑 페이지에서 크롤링을 할때, 제품 페이지 안에 들어가면, 여러 옵션을 선택할 수 있는 창이 있는데, 이 옵션들을 선택한 가격도 크롤링으로 가져올 수 있나요?예를 들어, 아래의 제품 페이지에 접속한 후, '선택'에 따라 가격이 달라지게 설정되어 있는 경우가 많은데, 해당 선택에 따른 가격을 크롤링할 수 있나요? 만약 가능하다면, 해당 내용을 실전편 강의 내용에서 다루는지 궁금합니다.
-
해결됨실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
셀레니움으로 네이버를 열고나서 갑자기 data;라는 주소로 바뀌고 내용이 사라집니다.
현재 코드는 아래와 같습니다.자꾸 에러뜨는게 있어서 구글링하면서 2줄이 추가되었네요.options = Options() ## ERROR:device_event_log_impl.cc(218) 방지코드 options.add_argument('--no-sandbox') options.add_experimental_option("excludeSwitches", ["enable-logging"]) ## 화면 창 유지해주는 코드 options.add_experimental_option("detach", True) 그런데, 네이버 창이 떠서 잠시 머물다가 창이 꺼지진 않고 이렇게 바뀝니다.주소가 data; 내용은없음..무엇이 문제일까요. 구글링해도 잘 못찾겠네요.
-
미해결실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
검색어 입력 관련
연습삼아 나라장터의 상단 부분에 셀레니움을 통해 특정 검색어를 입력 후 검색을 실행 하려합니다관련하여, 해당페이지 접속 후 단순히 find.element를 통해 driver.find_element(By.ID,"AKCKwd").sendkeys("검색어")와같이 사용할 수는 없는 것 인지요?
-
미해결이것이 진짜 크롤링이다 - 실전편
광고상품 외 표기 문의드립니다.
안녕하세요. 답변 감사드립니다.전체 코드를 첨부하여 다시 문의글 작성하였습니다.쿠팡 광고상품과 로켓상품도 표기하고자 합니다.if len(link.select(".ad-badge-text")) > 0:print("광고상품")를 아래와 같이 수정하면 될까요?해봤는데 아무표기가 안되서요. if len(link.select("span.badge rocket")) > 0:print("로켓상품") 그리고 광고상품 로켓상품 둘다 표현하고자 하면아래와 같이 표기하면 될까요?if len(link.select(".ad-badge-text")) > 0:print("광고상품")elif len(link.select("span.badge rocket")) > 0:print("로켓상품")광고상품은 광고상품이라고 잘 표기가 되는게 로켓상품은 전혀 결과가 나오지 않아서요.
-
미해결남박사의 파이썬 기초부터 실전 100% 활용
질문드립니다.
사용자 입력 예외처리를 하고 있는데,1)문자 입력 시 오류2)3자리 숫자가 아닐 경우 오류다음과 같이 코드를 짰는데 1)의 경우 except 부분에서 "입력 오류"를 출력하지만 2)의 경우 "입력오류"가 출력되지 않고 그냥 재입력하게 되네요.혹시 이유를 알 수 있나요?또한문자 입력 시 "숫자만 입력 가능합니다"를 출력두자리수 입력 시 "세 자리 수를 입력하세요"를 출력하도록 하려면 코드를 어떻게 수정해야 할까요?감사합니다.!#세 자리 숫자만 입력할 수 있게 하는 함수 def input_check(msg, casting = int): while True: try: num = input(msg) # 사용자 입력 num_str = str(num) #맨 앞의 수가 0일경우 0이 잘려버리기 때문에 str을 따로 저장 if(casting(num) and len(num) == 3): return num_str except: print("입력 오류") continue
-
미해결실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
개발자 모드에서 클래스 항목 갯수 찾는 부분은 어떻게 설정할 수 있나요?
이부분 설정을 어떻게 하는지 궁금합니다. 검색해도 못찾겠습니다~ㅠㅠ
-
미해결이것이 진짜 크롤링이다 - 기본편
제발 도와주세요ㅠ
C:\coding\py>C:/Users/taehw/AppData/Local/Programs/Python/Python311/python.exe c:/coding/py/증권.pyTraceback (most recent call last): File "c:\coding\py\증권.py", line 2, in <module> from bs4 import BeautifulSoupImportError: cannot import name 'BeautifulSoup' from 'bs4' (C:\Users\taehw\AppData\Local\Programs\Python\Python311\Lib\site-packages\bs4\__init__.py) 이렇게 오류 문자가 떠요!코드는 이렇게 썻어요! import requests from bs4 import BeautifulSoup # 종목 코드 리스트 codes = [ '035420', '088980', '005930', '035720' ] for code in codes: url = f"https://finance.naver.com/item/sise.naver?code={code}" response = requests.get(url) html = response.text soup = BeautifulSoup(html, 'html.parser') price = soup.select_one("#_nowVal").text price = price.replace(',', '') print(price)
-
미해결파이썬 셀레니움 고급편 (python selenium - 크롤링, 크롤러)
안녕하세요. 강의의 미흡한점이 있어 문의드립니다.
안녕하세요. 강의의 미흡한점이 있어 문의드립니다. ● 2-4 강의에서 사이트 링크를 남겨 주신다고 했는데 없네요.● 1-5 에서 마지막 강의에서 undetected_chromedriver 사용법을 알려 주신다고 했는데 마지막강의에서는 이내용 없습니다. ● 3-1 강의에서도 undetected_chromedriver를 사용해서 코드작성을 A To Z 를 한다고 했는데 없 네요.● 1-5 강의 들어보고 결정하려 고했는데 마지막에 사용방법 알려준다고 해서 마지막까지 들었는 데 없어서 난감합니다.● 1-5 에서 undetected_chromedriver 에대한 강의 였는데 이후 강의에서는options.add_argument("--disable-blink-features=AutomationControlled")를 사용하던데 햇갈려서 순서가 맞는지 궁금합니다.그리고 강사님께 직접 여쭤보고 싶은데 어디에 질문해야 할까요? 답변부탁드립니다.
-
미해결Github Action을 활용한 크롤러 웹 페이지 만들기
push 작업 중 아래와 같은 에러가 발생합니다.
크롤링 데이터 파일 생성 후 나에게 push하기 강의 실습 중 위의 에러가 발생했습니다.아래는 제 main.yml 파일입니다.name: helloGithubAction on: [push] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: # 개인 토큰을 사용할 것인지 말 것인지 persist-credentials: false - name: 1. pip 업그래이드 run: python -m pip install --upgrade pip - name: 2. 환경 설정 run: pip install -r requirements.txt - name: 3. 파이썬 실행 run: python test_crawl_2.py - name: Commit files run: | git config --local user.email "hajuny129@gmail.com" git config --local user.name "HaJunYoo" git add . git commit -m "Run crawler and update current data" - name: Push changes uses: ad-m/github-push-action@master with: github_token: ${{ secrets.GITHUB_TOKEN }} branch: ${{ github.ref }}
-
미해결실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
크롤링 데이터 가공 후 입력창에 넣기
수업 잘 듣고 있습니다.자동화를 하고 싶으서 예전 영상 보다가 최근에 다시 올라와서 보는 중 강의 발견하고 바로 수강해서 듣고 있습니다. 궁금한 것이 하나 있는데요.셀레니움에서 하나의 윈도우 창의 특정 태그 값을 찾아서다른 윈도우 창을 오픈 한 후 특정 필드에 값을 넣을 수 있나요?
-
해결됨남박사의 파이썬 기초부터 실전 100% 활용
list.reverse() 출력에 대해서 질문있습니다.
안녕하세요. 남박사님. list() 데이터 구조에서 reverse() 메서드의 결과값이 이해가 안되서 질문을 남기게 되었습니다.a=[4,5,6,1,2,3] a.sort() print(a) b=[4,5,6,1,2,3] b.reverse() print(b)[1, 2, 3, 4, 5, 6] [3, 2, 1, 6, 5, 4]sort()는 정방향 정렬, reverse()는 역방향 정렬이라고 배웠는데요. 역방향 정렬의 결과값이 제가 생각했을 때는 [6,5,4,3,2,1]로 출력되어야 할것 같은데 제 예상과는 반대로 [3,2,1,6,5,4]로 출력되고 있습니다. 왜 그런지 궁금합니다.
-
미해결파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
패턴으로 실습하며 익히기:html/css 이해를 바탕으로 크롤링하기
- 본 강의 영상 학습 관련 문의에 대해 답변을 드립니다. (어떤 챕터 몇분 몇초를 꼭 기재부탁드립니다)- 이외의 문의등은 평생강의이므로 양해를 부탁드립니다- 현업과 병행하는 관계로 주말/휴가 제외 최대한 3일내로 답변을 드리려 노력하고 있습니다- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. <div class="layer_body" data-translation="true"> <p>금융당국이 급증하는 가계부채 증가세를 막기 위해 아파트 잔금대출에도 소득을 따져 대출한도를 정하는 총부채상환비율(DTI)을 적용하는 방안을 유력하게 검토하고 있다.</p> <p>지금은 집값을 기준으로 대출한도를 매기는 주택담보인정비율(LTV) 규제만 적용돼 소득이 없어도 집값의 70%를 빌려 잔금을 치르는 게 가능하다.</p> <p>앞으로 잔금대출에 DTI가 적용되면 소득이 없는 사람은 집값의 70% 대출 받는 게 어려워진다.</p> </div> 안녕하세요.지금 강의 중인 내용에 보면 class의 div 값과 다르게 2개의 값이 연이어 나오는데요.이런 경우에는 어떻게 입력하면 될까요?복사해서 넣어보고 했는데 계속 오류가 뜹니다. import requestsfrom bs4 import BeautifulSoupres = requests.get('https://v.daum.net/v/20170615203441266')soup = BeautifulSoup(res.content,'html.parser')mydata = soup.find_all('div','layer_body' data-translation='true') mydata.get_text() 이런식으로 연달아서 넣으면 되는건지...답변 부탁드려요^^
-
미해결파이썬 무료 강의 (활용편3) - 웹 스크래핑 (5시간)
네이버 항공권 관련 제가 작성한 코드 조심스럽게 공유해드립니다.ㅜ
안녕하세요먼저 좋은 강의 해주시는 나도코딩님께 감사드립니다. 이전에 나름 정성들여 글을 작성했는데, 확인이 안돼서 다시 작성해봅니다. 제가 강의를 보고있는 2023년 1월 19일과 강의날인 2020년 8월과 네이버 항공권 인터페이스가 많이 상이하고, 셀레니움과 파이썬 버전이 달라 저의경우 아래와 같이 코드를 작성했습니다. 다른분들께 도움이 되었으면 좋겠습니다. 현재 저의 환경의 경우 python버전 3.10.7 버전이고 selenium또한 강의때 사용하신것 보다 더 높은 것으로 보입니다. 현재 제 경우와 강의내용과 상이한 부분은 아래와 같습니다. 네이버 항공권 진입시, "지금 바로 혜택 확인하기" 광고 팝업창 발생, 해당부분 get_attribute메소드를 사용해 title을 비교해, 팝업이 있다면 팝업을 삭제하는 XPATH를 확인해 해당 엘리먼트를 클릭하도록 구현browser.find_element_by_class_name과 같이 find_element_by_~~ 메소드 사용불가=> 현재 제가 사용중인 셀레니움 버전이 상위 버전으로 보이는데, 이는 3 line과 같이 import By로 쉽게 수정 가능find_elements_link_text 메소드 사용 불가=> 2020년대비 2023년 현재 네이버 항공권 웹페이지 인터페이스의 변화때문인지 "가는 날" 및 날짜 선택을 위해 해당 메소드 사용시 빈리스트만 반환"가는 날"은 XPATH로 엘리먼트를 얻어와 클릭하도록 구현원하는 날짜의 경우 class이름을 확인해 모든 날짜정보를 갖고와 원하는 날짜정보만 사용하도록 구현 (compute_date 함수 참고 부탁 드립니다.)추가적으로, 이 경우에 1년치 달력정보를 모두 읽어와 속도가 매우 느린데 더 좋은 방법을 알고계신분은 공유 부탁드립니다. ( _ _ )compute_date(dates, 30)[1].click()코드를 이렇게 수정해 오는날을 2월 30일을 선택하려 했으나 3월 30일을 선택해, 코드 오류인줄 알고 디버깅해보니 2월달은 30일이 없었습니다...ㅎ정상동작 중 입니다.저와같이 초반에 고생하시는 분들께 조금이나마 도움이 되었으면 좋겠습니다.감사합니다. import time from selenium import webdriver from selenium.webdriver.common.by import By URL = "https://flight.naver.com/" def compute_date(dates, target) -> list: print("compute entire date information from current month to limit") return [date for date in dates if date.text == str(target)] browser = webdriver.Chrome() # browser.maximize_window() browser.get(URL) time.sleep(1) # remove AD popup find = browser.find_elements(By.CLASS_NAME, "anchor") for f in find: if f.get_attribute("title") == "지금 바로 혜택 확인하기": browser.find_element(By.XPATH, '//*[@id="__next"]/div/div[1]/div[9]/div/div[2]/button[1]').click() print("remove pop up") break # push 가는 날 button also delay 1 sec is necessary, if don't use this, can not read date information. browser.find_element(By.XPATH, '//*[@id="__next"]/div/div[1]/div[4]/div/div/div[2]/div[2]/button[1]').click() time.sleep(1) # read date information and push 25 day dates = browser.find_elements(By.CLASS_NAME, "sc-evZas dDVwEk num".replace(" ", ".")) compute_date(dates, 25)[0].click() # read date information and push 30 day dates = browser.find_elements(By.CLASS_NAME, "sc-evZas dDVwEk num".replace(" ", ".")) compute_date(dates, 30)[0].click() while True: pass
-
미해결이것이 진짜 크롤링이다 - 실전편
SyntaxError: invalid syntax 모르겠습니다
SyntaxError: invalid syntax 에러가 뜨는데디버깅없이 실행, python파일 디버그로 실행하면 정상적으로 실행이 됩니다.왜이런지 알 수 있을까요 ㅜㅜ
-
해결됨일잘하는 마케터, MD에게 꼭 필요한 파이썬 데이터 분석
기상청 온도정보 크롤링 강의 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강의와 동일한 내용으로 코드를 작성하는데,웹페이지 html 출력 영역에서 계속 오류가 납니다.처음에는 requests 이름 오류라고 뜨더니 이제는 모듈 타입에러라고 뜨는데,혹시 위 내용 어느 부분이 잘못된 것인지 문의 드립니다.
-
해결됨일잘하는 마케터, MD에게 꼭 필요한 파이썬 데이터 분석
네이버 쇼핑 카테고리별 인기검색어 크롤링 강의 중 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 선생님 안녕하세요!강의를 들으며 열심히 실습중인데 에러가 자꾸떠서요 ㅠㅠ맨처음에 if 문 넣기전에는 실행이 되었었는데 어찌된일인지 if문을 넣고 난 다음부터 자꾸 에러가 납니다 ㅠㅠ if문 넣기 전에 상품펼치기 지우기 전 자료는 new 상품 펼치기가 없었어요.. 혹시 그것때문은 아닐까요 ㅠㅠ왕왕 초보라 어렵네요 답변부탁드려요감사합니다!
-
미해결파이썬 증권 데이터 수집과 분석으로 신호와 소음 찾기
한국거래서 상장종목 에러
기존에 있었던 Market(시장)이 데이터에 없어서 예제코드 일부가 커밋이 안되고 있습니다. fdr 라이브러리를 사용해야하는 걸까요? 진행이 안되어 답답합니다.감사합니다.
-
미해결Node.js로 웹 크롤링하기
cheerio deprecated
const crawler = async() => { await Promise.all(records.map( async(r) => { const response = await axios.get(r.링크) if(response.status === 200){ const html = response.data const $ = cheerio.load(html) const text = $('.score.score_left .star_score').text() console.log(r.제목,'평점',text) } } )) }1-4 axios-cheerio로 첫 크롤링하기 강의중 const $ = cheerio.load시 cheerio에 빗금이 처지며 deprecated라는 표시가 뜹니다. 무시하고 그냥 해도 결과는 나오지만 구글링을 해봐도 deprecated대신 사용할수있는게 없어 그냥 해야하나 아니면 다른 방법으로 대체해야하나 궁금합니다.package.json은 아래와 같습니다."dependencies": { "axios": "^1.1.3", "cheerio": "^1.0.0-rc.12", "nodemon": "^2.0.20" }